package com.itheima.d2_lambda;
/*
    1 Lambda表达式介绍
        Lambda表达式是JDK 8开始新增的一种语法形式； 作用：用于简化匿名内部类的代码写法。
    2 Lambda表达式格式
        (被重写方法的形参列表) -> {
              被重写方法的方法体代码。
        }
        注意 :  Lambda表达式只能简化函数式接口的匿名内部类!!!
    3 什么是函数式接口？
        有且仅有一个抽象方法的接口。
        注意：将来我们见到的大部分函数式接口，上面都可能会有一个@FunctionalInterface的注解，有该注解的接口就必定是函数式接口。

 */
public class LambdaTest1 {
    public static void main(String[] args) {
        MyRunnable mr = new MyRunnable() {
            @Override
            public void run() {
                System.out.println("匿名内部类重写run方法");
            }
        };
        mr.run();

        // 1、简化写法
        MyRunnable mr1 = () -> {
            System.out.println("Lambda表达式重写run方法");
        };
        mr1.run();
        System.out.println("==========================");
        MyRunnable mr2 = () -> System.out.println("Lambda表达式重写run方法");
        mr2.run();
        System.out.println("==========================");
        MyRunnable mr3 = () -> {
            int a = 10;
            int b = 20;
            int sum = a + b;
            System.out.println(sum);
        };
        mr3.run();
        System.out.println("==========================");

    }
}
interface MyRunnable{
    void run();
}